#include <iostream>
#include <vector>
#include <string>
#include <set>
using namespace std;
int n,k;
vector<int> path;
vector<int> arr(20);
vector<vector<int>> ret; 
set<int> myHash;
void dfs()
{
	if(path.size()==n)
	{
		ret.push_back(path); 
		return;
	}
	
	for(int i=1;i<=n;i++)
	{
		if(myHash.count(arr[i])==0)
		{
			path.push_back(arr[i]);
			myHash.insert(arr[i]);
			dfs();
			path.pop_back();
			myHash.erase(arr[i]);
		}
	}
	
}
int main()
{
	cin>>n;	 
	for(int i=1;i<=n;i++)
	{
		arr[i]=i;
	}
	
	dfs();
	for(auto& i:ret)
	{
		for(int &j:i)
		{
			printf("%5d",j);
		}
		cout<<endl;
	}	
	return 0;
 } 
